<?php

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */


/**
 * @title 验证码
 */

namespace app\index\controller;

use app\common\controller\Base;
use utils\Gee\GeetestLib;

/**
 * @title VNA专有模块
 * 
 */
class Vna extends Base {

    /**
     * @title 默认页面
     */
    public function index() {
        
    }

    /**
     * @title 智能验证码生成
     */
    public function gee() {



        $GtSdk = new GeetestLib("ddf21c782ee0abb0a0e33684efbb93e4", "bd3f8df253ba7edf5da69f2c0f53de30");
        session_start();

        $data = array(
            "user_id" => session_id(), # 网站用户id
            "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
            "ip_address" => request()->ip() # 请在此处传输用户请求验证时所携带的IP
        );

        $status = $GtSdk->pre_process($data, 1);


        //$_SESSION['gtserver'] = $status;
        //$_SESSION['user_id'] = $data['user_id'];

        session('gtserver', $status);
        session('user_id', $data['user_id']);
        // $_SESSION['user_id'] = ;

        echo $GtSdk->get_response_str();
    }

    public function test() {



        $this->assign('message', '');

        return view('yz_result');
    }

    /**
     * @title 防伪验证
     */
    public function fakeanti() {
        
        session_start();

        $post = input('post.');
        $GtSdk = new GeetestLib("ddf21c782ee0abb0a0e33684efbb93e4", "bd3f8df253ba7edf5da69f2c0f53de30");
        $data = array(
            "user_id" => session_id(), # 网站用户id
            "client_type" => "web", #web:电脑上的浏览器；h5:手机上的浏览器，包括移动应用内完全内置的web_view；native：通过原生SDK植入APP应用的方式
            "ip_address" => request()->ip() # 请在此处传输用户请求验证时所携带的IP
        );
        
        
        
        $geetest_challenge = input('post.geetest_challenge', '');
        $geetest_validate = input('post.geetest_validate', '');
        $geetest_seccode = input('post.geetest_seccode', '');
        
        if(!isset($geetest_challenge)){
             $this->error('验证码有误 或 已经过期，请返回重试.');
        }

        if (session('gtserver') == 1) {   //服务器正常;
            if ($GtSdk->success_validate($geetest_challenge, $geetest_validate, $geetest_seccode, $data)) {
                $this->_fakeanti_check($post['code']);
            } else {
                $this->error('验证码有误 或 已经过期，请返回重试.');
            }
        } else {  //服务器宕机,走failback模式
            if ($GtSdk->fail_validate($geetest_challenge, $geetest_validate, $geetest_seccode)) {
                $this->_fakeanti_check($post['code']);
            } else {
                $this->error('验证码有误 或 已经过期，请返回重试。');
            }
        }
    }

    /**
     * @title 防伪验证
     * @param type $code
     */
    public function _fakeanti_check($code = '') {

        if (empty($code)) {

            $this->error('验证码不能为空');
        }

        if (request()->isAjax()) {


            $result = db('yanzheng')->where('code', '=', md5($code))->find();
            if (empty($result)) {

                // 记录错误的信息
                $data = [
                    'code' => $code,
                    'ip' => request()->ip(),
                    'create_time' => time(),
                    'code_id' => 0
                ];
                db('yanzheng_history')->insert($data);

                // 
                $message = '<div class="text-center well"><br>'
                        . '<font color="#a94442"><i class="fa fa-times-circle fa-3x" aria-hidden="true"></i></font>'
                        . '<h3>验证失败</h3>'
                        . '<div style="line-height:2">'
                        . '尊敬的顾客，您好<br>'
                        . '您所查询的防伪码不存在<br> '
                        . '您购买的商品非为纳百川公司出品<br>'
                        . '请至授权经销商处购买<br>'
                        . '或者仔细核对后再次查询<br>'
                        . '如有疑问请拨打售后热线：<a style="color:#a94442;" href="tel:4006567921">4006-567-921</a><br>'
                        . '咨询人工客服'
                        . '</div>'
                        . '</div>';

                $this->success($message);
            } else {


                //插入一组数据到 IP 统计表
                $data = [
                    'code' => $code,
                    'ip' => request()->ip(),
                    'create_time' => time(),
                    'code_id' => $result['id']
                ];
                db('yanzheng_history')->insert($data);

                // 查询次数+1
                db('yanzheng')->where('id', $result['id'])->setInc('count');


                if ($result['count'] > 0) {


                    //查看第一次查询的时间
                    $first_time = db('yanzheng_history')->where('code_id', $result['id'])->order('id')->value('create_time');

                    $message = '<div class="text-center well"><br>'
                            . '<font color="#8a6d3b"><i class="fa fa-info-circle fa-3x" aria-hidden="true"></i></font>'
                            . '<h3>防伪码已被查验</h3>'
                            . '<div style="line-height:2">'
                            . '尊敬的顾客，您好！<br>'
                            . '您所查询的防伪编码已经于' . date('Y年m月d日 H时i分s秒', $first_time) . '被首次查询过，<br>'
                            . '请仔细核对，谨防假冒！<br>  '
                            . '如有疑问请拨打售后热线4006-567-921咨询人工客服。'
                            . '</div>'
                            . '</div>';

                    $this->success($message);
                } else {

                    $message = '<div class="text-center well"><br>'
                            . '<font color="#3c763d"><i class="fa fa-check-circle fa-3x" aria-hidden="true"></i></font>'
                            . '<h3>验证成功</h3>'
                            . '<div style="line-height:2">'
                            . '恭喜您，您所购买的产品为 <span style="color:#3c763d;font-weight:bold;">正品</span><br>'
                            . '请放心使用。'
                            . '</div>'
                            . '</div>';

                    $this->success($message);
                }
            }
        }
    }

}
